package cn.wolfcode.luowowo.common.key;

import lombok.Getter;

@Getter
public enum RedisKey {

    //手机验证码缓存key前缀
    VerifyCode_PREFIX("VerifyCode", 3 * 60L),

    //登录令牌key前缀
    LOGIN_USERINFO_PREFIX("loginUserInfo",30*60L),

    //redis中攻略统计vo的前缀   -1 不设置过期时间
    STRATEGY_STATIS_VO("strategy_statis_vo",-1L),

    //用户收藏的文章储存在redis中的key的前缀
    STRATEGY_STATIS_USER_FAVOR("strategy_statis_user_favor",-1L),

    //点赞储存在key中的前缀 存活时间根据点赞时间而定,所以不能在这里写死
    STRATEGY_STATIS_USER_THUMBSUPNUM("strategy_statis_user_thumbsupnum",-1L),

    //redis中游记统计vo的前缀   -1 不设置过期时间
    TRAVEL_STATIS_VO("travel_statis_vo",-1L),

    //用户收藏的文章储存在redis中的key的前缀
    TRAVEL_STATIS_USER_FAVOR("travel_statis_user_favor",-1L),

    //点赞储存在key中的前缀 存活时间根据点赞时间而定,所以不能在这里写死
    TRAVEL_STATIS_USER_THUMBSUPNUM("travel_statis_user_thumbsupnum",-1L),

    //国内外攻略排行使用的redis zset 的 key
    STRATEGY_STATIS_ISABROAD_SORT("strategy_statis_isabroad_sort",-1L),

    //热门攻略排行
    STRATEGY_STATIS_HOT_SORT("strategy_statis_hot_sort",-1L),

    //用来存储限制一个ip的访问URL的次数
    LIMIT_TIMES_IP(" limit_times_ip",60L),

    //IP黑名单限制
    IP_BLACKLIST("ip_blacklist",30*60L),

    /**社区统计*/

    //社区统计处理  -1 不设置过期时间
    COMMUNITY_STATIS_VO("community_statis_vo",-1L),

    //社区问答关注统计
    COMMUNITY_STATIS_FAVOR("community_statis_favor",-1L),

    // Cookie name  宋君华
    TOKEN_COOKIE_NAME("token_cookie_name",30*60L),
    //用户收藏的攻略
    USER_STRATEGY_FAVOR("user_strategy_favor",-1L),
    //社区回复点赞key中的前缀 存活时间根据点赞时间而定,不能在这里写死
    COMMUNITY_STATIS_USER_THUMBSUPNUM("community_statis_user_thumbsupnum",-1L);


    private String prefix;
    private Long livingTime;

    private RedisKey(String prefix, Long livingTime) {
        this.prefix = prefix;
        this.livingTime = livingTime;
    }

    public String appendKey(String...str){

        StringBuilder sb = new StringBuilder();

        if(str.length != 0){

            sb.append(this.prefix);

            for (String s : str) {
                sb.append(":").append(s);
            }
        }
        return sb.toString();
    }

}
